//class MyArray {
//    public Object[] objects = new Object[10];
//
//    public void setObjects(int pos,Object o) {
//        this.objects[pos] = o;
//    }
//
//    public Object getObjects(int pos) {
//        return this.objects[pos];
//    }
//}

//class MyArray<E> {
//    public Object[] objects = new Object[10];
//
//    public void setObjects(int pos,E o) {
//        this.objects[pos] = o;
//    }
//
//    public E getObjects(int pos) {
//        return (E)this.objects[pos];
//    }
//}

class MyArray<E extends Number> {
    //定义泛型的上界
    public Object[] objects = new Object[10];

    public void setObjects(int pos,E o) {
        this.objects[pos] = o;
    }

    public E getObjects(int pos) {
        return (E)this.objects[pos];
    }
}
public class Test {
    public static void main(String[] args) {
        MyArray<Integer> myArray1 = new MyArray<>();

//        MyArray<String> myArray2 = new MyArray<>();
    }
//    public static void main3(String[] args) {
//        //泛型的擦除机制
//        MyArray<Integer> myArray1 = new MyArray<>();
//        System.out.println(myArray1);

//        MyArray<String> myArray2 = new MyArray<>();
//        System.out.println(myArray2);

//        Test test = new Test();
//        System.out.println(test);
//    }
//    public static void main2(String[] args) {
//        MyArray myArray1 = new MyArray();
//        myArray1.setObjects(0,"hello");
//        myArray1.setObjects(1,"word");
//        myArray1.setObjects(2,20);
//        String str = (String) myArray1.getObjects(1);
//        System.out.println(str);
//        //裸类型，泛型是在JDK1.5之后引入的，我们在之间没有，所以裸类型是为了兼容以前的版本
//    }
//    public static void main1(String[] args) {
//        MyArray<Integer> myArray = new MyArray<>();
//        myArray.setObjects(0,10);
//        myArray.setObjects(1,30);
//        //myArray.setObjects(1,"hello");//会自动类型检查，和我们传的类型不同就会报错
//        //String str = (String) myArray.getObjects(1);
//        Integer n = myArray.getObjects(0);//我们对于取对象就不用在进行强转了
//        System.out.println(n);
//        System.out.println("=============");
//        MyArray<String> myArray1 = new MyArray<>();
//        myArray1.setObjects(0,"hello");
//        myArray1.setObjects(1,"word");
//        String str = myArray1.getObjects(1);
//        System.out.println(str);
//    }
}
